home *** CD-ROM | disk | FTP | other *** search
/ CU Amiga Super CD-ROM 24 / CU Amiga Magazine's Super CD-ROM 24 (1998)(EMAP Images)(GB)(Track 1 of 2)[!][issue 1998-07].iso / CUCD / Programming / Asap / ASAP / Library.h < prev    next >
Encoding:
C/C++ Source or Header  |  2006-09-25  |  4.7 KB  |  112 lines

  1. /*****************************************************************************
  2.  *                                                                           *
  3.  * ASAP - Amiga Software Authoring Platform                                  *
  4.  *                                                                           *
  5.  * Written by Laurie Perrin                                                  *
  6.  *                                                                           *
  7.  * Library wrapper class                                                     *
  8.  *                                                                           *
  9.  *****************************************************************************/
  10.  
  11. #ifndef ASAP_LIBRARY_H
  12. #define ASAP_LIBRARY_H
  13.  
  14. #include <New.h>
  15.  
  16. extern "C"
  17. {
  18.  #include <Exec/Libraries.h>
  19.  #include <Proto/EXEC.h>
  20. }
  21.  
  22. class ALibrary : public Library
  23. {
  24.  public:
  25.  inline void AddLibrary();
  26.  inline void CloseLibrary();
  27.  inline void operator delete (void *library);
  28.  inline static ALibrary *MakeLibrary(APTR funcInit, unsigned long (*libInit)(), unsigned long dataSize, unsigned long segList);
  29.  inline void * operator new (size_t, APTR funcInit, unsigned long (*libInit)(), unsigned long dataSize, unsigned long segList);
  30.  inline static ALibrary *MakeLibrary(APTR funcInit, APTR structInit, unsigned long dataSize, unsigned long segList);
  31.  inline void * operator new (size_t, APTR funcInit, APTR structInit, unsigned long dataSize, unsigned long segList);
  32.  inline static ALibrary *OldOpenLibrary(UBYTE *libName);
  33.  inline void * operator new (size_t, UBYTE *libName);
  34.  inline static ALibrary *OpenLibrary( UBYTE *libName, unsigned long version);
  35.  inline void * operator new (size_t, UBYTE *libName, unsigned long version);
  36.  inline void RemLibrary();
  37.  inline APTR SetFunction(long funcOffset, unsigned long (*newFunction)());
  38.  inline void SumLibrary();
  39. };
  40. //-----------------------------------------------------------------------------
  41. void ALibrary::AddLibrary ()
  42. {
  43.  ::AddLibrary(this);
  44. }
  45. //-----------------------------------------------------------------------------
  46. void ALibrary::CloseLibrary ()
  47. {
  48.  ::CloseLibrary(this);
  49. }
  50. //-----------------------------------------------------------------------------
  51. void ALibrary::operator delete (void *library)
  52. {
  53.  ((ALibrary *) library)->CloseLibrary();
  54. }
  55. //-----------------------------------------------------------------------------
  56. ALibrary * ALibrary::MakeLibrary (APTR funcInit, unsigned long (*libInit)(), unsigned long dataSize, unsigned long segList)
  57. {
  58.  return (ALibrary *) ::MakeLibrary(funcInit, 0, libInit, dataSize, segList);
  59. }
  60. //-----------------------------------------------------------------------------
  61. void * ALibrary::operator new (size_t, APTR funcInit, unsigned long (*libInit)(), unsigned long dataSize, unsigned long segList)
  62. {
  63.  return ALibrary::MakeLibrary(funcInit, libInit, dataSize, segList);
  64. }
  65. //-----------------------------------------------------------------------------
  66. ALibrary * ALibrary::MakeLibrary (APTR funcInit, APTR structInit, unsigned long dataSize, unsigned long segList)
  67. {
  68.  return (ALibrary *) ::MakeLibrary(funcInit, structInit, 0, dataSize, segList);
  69. }
  70. //-----------------------------------------------------------------------------
  71. void * ALibrary::operator new (size_t, APTR funcInit, APTR structInit, unsigned long dataSize, unsigned long segList)
  72. {
  73.  return ALibrary::MakeLibrary(funcInit, structInit, dataSize, segList);
  74. }
  75. //-----------------------------------------------------------------------------
  76. ALibrary * ALibrary::OldOpenLibrary (UBYTE *libName)
  77. {
  78.  return (ALibrary *) ::OldOpenLibrary(libName);
  79. }
  80. //-----------------------------------------------------------------------------
  81. void * operator new (size_t, UBYTE *libName)
  82. {
  83.  return ALibrary::OldOpenLibrary(libName);
  84. }
  85. //-----------------------------------------------------------------------------
  86. ALibrary * ALibrary::OpenLibrary (UBYTE *libName, unsigned long version)
  87. {
  88.  return (ALibrary *) ::OpenLibrary(libName, version);
  89. }
  90. //-----------------------------------------------------------------------------
  91. void * ALibrary::operator new (size_t, UBYTE *libName, unsigned long version)
  92. {
  93.  return ALibrary::OpenLibrary(libName, version);
  94. }
  95. //-----------------------------------------------------------------------------
  96. void ALibrary::RemLibrary ()
  97. {
  98.  ::RemLibrary(this);
  99. }
  100. //-----------------------------------------------------------------------------
  101. APTR ALibrary::SetFunction (long funcOffset, unsigned long (*newFunction)())
  102. {
  103.  return ::SetFunction(this, funcOffset, newFunction);
  104. }
  105. //-----------------------------------------------------------------------------
  106. void ALibrary::SumLibrary ()
  107. {
  108.  ::SumLibrary(this);
  109. }
  110.  
  111. #endif
  112.